Traditional packetized networks have generated packets of data and injected them into networks having a connection-oriented topology wherein packets propagated serially from a source to a destination and therefore arrived in sequence for re-assembly into information strings. As network topologies evolve and interconnect paths become more complex, propagation paths become more varied. Information from a source may be packetized and routed to a destination over divergent paths. A destination may receive packetized information out-of-sequence.
Traditionally, out-of-sequence packets were serviced by accepting only those packets received in order and requesting a re-transmission of those packets received out-of-sequence. Additionally, re-transmission requests may have occurred prematurely as sequential packets may have propagated through paths having different delays. Often times, a request for re-transmission may cause a link to reset and perform overhead functions. Furthermore, some packets may be lost or destroyed in the network and never arrive at the destination.
To accommodate propagation duration variations, timers have been employed to provide a delay equal to the longest propagation paths. Complications involving timers arise, however, when multiple packets are lost in the system. Activating an individual delay timer for each delayed or missed packet becomes a complex and inefficient task when a series of packets are missing. Management of multiple timers robs processors and controllers of resources for servicing data and therefore impacts system performance.
If a single delay timer is employed and reused for each subsequently missing or delayed packet, then other inefficiencies are introduced. When an initial packet is delayed and a system activates a timer for the maximum propagation delay period, the timer will expire following the delay period. If during the delay period, multiple packets had been detected as being delayed, then the timer would be restarted for a subsequently missed packet. In this scenario, however, the timer is not activated at the point in time when the subsequent packet was detected as being delay, but rather the timer is activated at a point in time when the timer expired from detecting the previously delayed packet. In such a scenario, delay has accumulated because the delay timer is being started only after it has expired for a previously delayed packet. When delay time, due to the sequential operation of the delay timer, accumulates to a point intolerable by an upper network service, that upper service will time-out and reset the link, thus exacerbating the situation.
Thus, what is needed is a system and method for ordering received packets arriving out-of-sequence from a lower service and forwarding the packets to an upper service in-sequence without accumulating delay introduced by late or dropped packets.
Also, what is needed is a system and method for ordering received packets arriving out-of-sequence by employing a single, system-manageable propagation toleration timer.